package org.groupg.mockdatabyspring.system.config;

import jakarta.annotation.PostConstruct;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Objects;

/**
 * 基础运行的配置内容
 */
@Configuration
@Slf4j
public class MockDataConfig {
    /**
     * 放置 mapdb 数据库的位置
     */
    @Getter
    @Value("${mapDBPath}")
    private String mapDBPath;

    /**
     * 图数据库的位置
     */
    @Getter
    @Setter
    @Value("${hyperGraphDBPath}")
    private String hyperGraphDBPath;


    /**
     * 设置的文件超时时间，超过多久后就会被删除，除非进程停止，否则任务会被执行，使用 timer 进行
     */
    @Getter
    @Value("${serverFileDeleteTime}")
    private String serverFileDeleteTime;

    /**
     * 静态变量的端口号
     */
    private static String serverPort;


    /**
     * 通过启动实例之后对改变量进行赋值的内容
     */
    @Value("${server.port}")
    private String port;

    /**
     * 获取当前服务的ip和端口
     *
     * @return url
     */
    public static String getUrl() {
        InetAddress address = null;
        try {
            address = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            log.error(e.getMessage(), e);
        }
        return "http://" + Objects.requireNonNull(address).getHostAddress() + ":" + serverPort;
    }

    /**
     * 获取当前服务的ip和端口
     *
     * @return url
     */
    public static String getLocalhostUrl() {
        return "http://localhost:" + serverPort;
    }

    /**
     * 完成依赖注入之后运行该方法
     */
    @PostConstruct
    public void setConfiguration() {
        serverPort = this.port;

        log.info("port:" + serverPort);

    }
}
